package JUC_stady;

import java.util.concurrent.*;

/**
 * Project: tobe-better-coder
 * Package: JUC_stady
 * 知识点：守护线程和用户线程
 * 1：守护线程是守护用户线程的线程，当用没有用户线程的时候，守护线程会自己销毁，反之会一直进行下去
 * 2：守护线程和用户线程是各自独自运行的
 * 3.通过方法isDaemon()可以判断当前线程是不是守护线程，通过setDaemon(true)来设置当前线程是否为守护线程，默认是用户线程
 *
 * @author : Mr.xu
 * @date : 2023/2/23 1:25
 */
public class TestDaemonThread {
    public static void main(String[] args) throws ExecutionException, InterruptedException {

    }

    public static void method2() {
        Thread t1 = new Thread(() -> {
            System.out.println(Thread.currentThread().isDaemon() ? "是守护线程" : "不是守护线程");
            int i = 0;
            while (true) {
                try {
                    i++;
                    //这里可以修改线程休眠时间，来加深对线程的体会
//                    TimeUnit.SECONDS.sleep(1);
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    System.out.println(Thread.currentThread().getName() + "执行任务中:" + i);
                }
            }
        }, "t1");
        t1.setDaemon(true);
        t1.start();

        Thread_test t2 = new Thread_test();
        t2.setDaemon(true);
        t2.start();

        try {
            TimeUnit.SECONDS.sleep(3);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

        }


        System.out.println(Thread.currentThread().getName() + "end 主线程");
    }

    public static void method1() {
        System.out.println("这里在进行业务操作");
        int i = 0;
        while (true) {
            i++;
            System.out.println(i);
        }
    }

    static class Thread_test extends Thread {
        @Override
        public void run() {
            method1();
        }
    }
}